package cn.tedu.api;
/**
 * @Author 金帮嘉诚
 * @Date 2021-06-15 周二 19:32
 */
/*本类用于测试String常用方法*/

import java.util.Arrays;

/**
 知识点：
 charAt()
 concat()

 startWith()
 endWith()

 equals()
 length()
 indexOf()
 lastIndexOf()

 toLowerCase()
 toUpperCase()

 getBytes()
 Arrays.toString()

 split()
 subString()

 trim()
 String.valueOf()

 */
public class TestString2 {
    public static void main(String[] args) {
        //1.通过高效的方式创建字符串，存在常量池
        String s="abc";
        //2.另一种方式创建字符串，没有高效的效果
        char[] value={'a','b','c'};
        String ss=new String(value);

        //2.测试常用方法

        System.out.println("s.charAt(1) = " + s.charAt(1));//b,获取指定下标处的字符，注意下标从零开始
        
        System.out.println("s.concat(\"xyz\") = " + s.concat("xyz"));//abcxyz,给字符串拼接参数中的内容，注意不影响本串
        System.out.println("s = " + s);//abc,串s的值没有被影响
        String s3=s.concat("cxy");//如果想要多次使用拼接效果，可以交给变量来保存，就可以多次使用
        System.out.println("s3 = " + s3);//abccxy
        
        System.out.println("s.startsWith(a) = " + s.startsWith("a"));//true,判断本串是否以指定字符开头
        System.out.println("s.endsWith(\"a\") = " + s.endsWith("a"));//false,判断本串是否以指定字符结尾
        
        System.out.println("(s==ss) = " + (s==ss));//false比较的是地址值，一个有高效的效果，一个没有，地址不同
        System.out.println("s.equals(ss) = " + s.equals(ss));//true,String重写了equals（），比较的是具体值，不是地址值
        
        System.out.println("s.length() = " + s.length());//3,得出本串的长度

        String s4="ababc";
        System.out.println("s4.indexOf(\"b\") = " + s4.indexOf("b"));//1,判断当前字符在本串第一次出现的下标
        System.out.println("s4.lastIndexOf(\"b\") = " + s4.lastIndexOf("b"));//3,判断当前字符在本串最后一次出现的下标
        
        System.out.println("s4.toLowerCase() = " + s4.toLowerCase());//ababc,把当前串转为全小写
        System.out.println("s4.toUpperCase() = " + s4.toUpperCase());//ABABC,把当前串转为全大写
        
        System.out.println("s.getBytes() = " + s.getBytes());//[B@1b6d3586,把指定串转为字节数组，返回值是byte[],所以打印的是数组的地址值
        System.out.println("Arrays.toString(s.getBytes()) = " + Arrays.toString(s.getBytes()));//数组[97, 98, 99]

        String s5="a b c d e f";
        //本方法是根据指定的内容来分割字符串，返回值类型是String[]
        System.out.println("s5.split(\" \") = " + s5.split(" "));//[Ljava.lang.String;@4554617c
        System.out.println("Arrays.toString(s5.split(\" \")) = " + Arrays.toString(s5.split(" ")));//[a, b, c, d, e, f]
        System.out.println("s5.substring(2) = " + s5.substring(2));// b c d e f,截取子串，从指定下标处开始截取子串
        System.out.println("s5.substring(1,3) = " + s5.substring(1,3));// b,截取子串，含头不含尾

        String s6="        abcde      ";
        System.out.println("s6.trim() = " + s6.trim());//abcde,本方法用于去除首尾两端的空格

        System.out.println("String.valueOf(10) = " + String.valueOf(10));//10,把int类型转换为String类型
        System.out.println("10" + 10);//1010,String类型的数据与int类型的数据进行了拼接
        System.out.println(String.valueOf(10)+11);//1011,int10转成String10后进行了拼接
        System.out.println(9+11);//int+int，可以计算，打印结果是20
        //
        //



    }
}
